package com.sugon.entity;

import cn.hutool.core.date.DateUtil;
import com.sugon.consts.DevInspectInterval;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 特种设备-压力管道台账实体
 * 表名 SPECIAL_DEV_PRESSURE_CHANNEL
 *
 * @author sugon
 * @date 2021-09-08 16:30:40
 */

@Data
public class SpecialDevPressureChannelEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 安装日期
     */
    private Date installDate;
    /**
     * 安全状况等级
     */
    private Integer safetyStatusLevel;
    /**
     * 介质
     */
    private String substance;
    /**
     * 管道长度mm
     */
    private String channelLength;
    /**
     * 公称直径mm
     */
    private String diameter;
    /**
     * 温度℃
     */
    private String temperature;
    /**
     * 压力(Mpa)
     */
    private String pressure;
    /**
     * 公称壁厚mm
     */
    private String thickness;
    /**
     * 使用状况正常、待报废、在用等
     */
    private String state;
    /**
     * 投用日期
     */
    private Date enableDate;
    /**
     * 焊口数量
     */
    private Integer holeNum;
    /**
     * 管道材质
     */
    private String channelMaterial;
    /**
     * 管道级别
     */
    private String channelLevel;
    /**
     * $column.comments
     */
    private String installUnit;
    /**
     * 设计单位
     */
    private String designUnit;
    /**
     * 管道编号
     */
    private String channelNo;
    /**
     * 备注
     */
    private String remark;
    /**
     * 最近一次更新用户
     */
    private String updateUser;
    /**
     * 最近一次更新时间
     */
    private Date gmtModified;
    /**
     * 创建用户
     */
    private String createUser;
    /**
     * 创建日期
     */
    private Date gmtCreate;
    /**
     * 最近一次检验周期
     */
    private Date latestInspectDate;
    /**
     * 检验周期，一般为月
     */
    private Integer inspectInterval;

    /**
     * 检验周期字符串格式，一般为月
     */
    private String inspectIntervalStr;

    public String getInspectIntervalStr() {
        return inspectInterval != null ? inspectInterval.toString() : "";
    }

    private String inspectIntervalDesc;

    public String getInspectIntervalDesc() {
        DevInspectInterval interval = DevInspectInterval.getByMonths(inspectInterval);
        return interval != null ? interval.getDesc() : null;
    }

    /**
     * 使用部门ID
     */
    private String userDept;

    /**
     * 设备名称
     */
    private String devName;
    /**
     * 主键
     */
    private String id;
    /**
     * 管道起始点
     */
    private String channelRange;

    /**
     * 检验报告编号
     */
    private String inspectReportNo;

    /**
     * 登记证代码
     */
    private String registCertCode;

    /**
     * 设备编码，系统自动生成，区别于设备代码(线下使用的)
     */
    private String equipmentCode;

    /************* 以下字段属于VO字段，关联查询获得 ****************/

    /**
     * 序号
     */
    private Integer idx;

    /**
     * 使用部门名称
     */
    private String userDeptName;

    /**
     * 检测机构ID
     */
    private String inspectUnit;

    /**
     * 检测机构名称
     */
    private String inspectUnitName;

    /**
     * 下次检测时间
     * 通过最近检验日期和检测周期得出
     */
    private Date nextInspectDate;

    public Date getNextInspectDate() {
        if (latestInspectDate != null && inspectInterval != null) {
            return DateUtil.offsetMonth(latestInspectDate, inspectInterval);
        }
        return null;
    }

}
